package com.zthz.douxing.event

import com.zthz.douxing.sendmessageservice.handlers.AbstractMessageHandlerService
import org.quartz.Job
import org.quartz.JobDataMap
import org.quartz.JobExecutionContext
import org.quartz.JobExecutionException

/**
 * 在用户将要出发前3个小时发送提醒的定时任务。由quartz来调度。
 */
class UserWillTripJob implements Job {

    /**
     * 这里负责生成发送的消息 XinGeMessageEvent，发送出去。
     * <p>
     * 在context中我们将会传入如下信息：
     * <li>EventBusService</li>
     * <li>RedisService 用于获取相应的天气信息</li>
     * <li>和原始的和UserWillTripEvent相关的信息。用于组织成一个合理的msg</li>
     * @param context
     * @throws JobExecutionException
     */
    @Override
    void execute(JobExecutionContext context) throws JobExecutionException {
        JobDataMap jobDataMap = context.getMergedJobDataMap()
        Closure jobClousure = jobDataMap.get(AbstractMessageHandlerService.JOBCONTENT_KEY)

        jobClousure(jobDataMap)

        context.getScheduler().deleteJob(context.getJobDetail().getKey())
    }

}